package com.foreknow.demo13;

/**
 * @author shkstart
 * @create 2021-08-02 14:07
 */

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件与流(I/O流)  ： I表示Input(读操作) 输入流  O表示Output(写操作)  输出流
 * 作用：主要作用是对文件的读(Input)/写操作(Output)
 *
 * 流的分类：
 * 1. 字节流/字符流
 *     1.1凡是以InputStream或者是OutputStream结尾的都是字节流(图片)  所有字节流的根父类InputStream/OutputStream
 *     1.2凡是以Reader/Writer结尾的都是字符流(文本文件)    否有字符流的根父类Reader/Writer
 *
 * 2. 节点流/处理流
 *     2.1 节点流：直接关联数据源(要读写的文件)的就是节点流
 *     2.2 处理流：相当于对节点流功能的增强（提高读写文件的效率）
 */
public class IODemo {
    public static void main(String[] args) {
        int read=0;
        try {
            //创建一文件输入流  ， 可以对文件进行读操作  FileInputStream是一个节点流
            FileInputStream fis=new FileInputStream("IMG_1886.PNG");
            //目标文件
            FileOutputStream fos=new FileOutputStream("new_IMG_1886.PNG");
            //读取源文件中的一个字节
            while (true){
                if(read!=-1){
                    read = fis.read();
                    //将读取到的read字节写到目标文件中
                    fos.write(read);
                    //读取下一个字节
                }else {
                    //释放资源
                    fos.close();
                    fis.close();
                    break;
                }


            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
